package upe.mestrado.operadores.cruzamento;

import java.util.Random;

import upe.mestrado.base.Individuo;
import upe.mestrado.base.OperadorCruzamento;

public class CruzamentoAleatorio implements OperadorCruzamento {
	
	public Individuo[] executar(Individuo... individuos) {
		Individuo pai1 = individuos[0];
		Individuo pai2 = individuos[1];
		
		int dimensoes = pai1.getGene().length;
		
		double[] gene1 = new double[dimensoes];
		double[] gene2 = new double[dimensoes];
		
		Random random = new Random();
		
		for (int i = 0; i < gene1.length; i++) {

			int numeroGerado = random.nextInt(2);
			
			if(numeroGerado % 2 == 0){
				gene1[i] = pai1.getGene()[i];
				gene2[i] = pai2.getGene()[i];
			}
			else{
				gene2[i] = pai1.getGene()[i];
				gene1[i] = pai2.getGene()[i];
			}
			
		}
		
		Individuo[] filhos = new Individuo[2];
		filhos[0] = new Individuo(gene1);
		filhos[1] = new Individuo(gene2);
		
		return filhos;
	}
}
